yuroyoroさんの死霊にみちびかれるままsbtを入れてみたりする話
そもsbtってなんなのさ
判ってない。
→SimpleBuildToolの略。
で。
・最新版は一個前のstableを使ってビルドする
という事なので、導入するには一個前のビルドツールを落としてきて、
それを使って最新の環境をビルドする事になる。
最終的に出来上がるものは、
Scalaのプログラムをビルドする為のjarファイル
ビルドに使うツールとしての、直前のバージョンのsbtをDL
sbt-launch.jar
ビルドする対象一式をDL
git clone git://github.com/harrah/xsbt.git
ビルド用のsbtを使って、最新のsbtをコンパイルする。
、、、
んだけど、ぶっちゃけこの作業の必要性ってあんま無い。
どうしてもって言うなら止めないけど、macportsとかで最新のsbtが苦もなく手に入ったりするし。
うん。
どうしてもっていうなら、
sbt build-all とかでビルドが開始される。だけどまだやるなよ、
build-allは大体の場合、メモリエラーが出る。OutOfMemoryError。PermGen space関連。
これは、ただ単に色々デカすぎるものを一発でビルドしようとしている為。
次の2点で対応。
→ビルドに使用するsbt自体の設定を、少し弄ってみた。
-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m
→個別にビルド
publish-local, proguard,sxr,docの4構成なので、個別に
sbt publish-local とかやってあげれば、まだ平和に事が進む。
セットアップと試し
mkdir hello
cd hello
echo 'object Hi { def main(args: Array[String]) = println("Hi!") }' > hw.scala
sbt
とかやると、初回であればいろんなコンポーネントを取得して来る。
で、
自分はエラーが出た。
[NOT FOUND ] commons-logging#commons-logging;1.0.4!commons-logging.jar
無い、って言われるのだけれど、調べてみると、
http://blog.teksol.info/tags/scala
依存性解決に失敗してるケースがあるみたい。
実際には.ivy2と.m2を削除すると正確に動く。
クリーンインストール前提の罠。
ちなみに問題のivy2とm2は、Jenkinsがらみで先に入ってたものっぽい。
フォルダだけ作ってた系だろうか。
環境再現がとりにくい、、、
取得するものがそれ以上なくなれば、REPLの状態になる。
[info] Set current project to default-cde796 (in build file:/Users/sassembla/test/hello/)
これは、現在のプロジェクトをフォルダ~の場所にセットしましたよって情報。
で、
> run
ビルドして起動する。
[info] Running Hi
Hi!
[success] Total time: 1 s, completed 2011/12/25 11:03:08
TextMateと連携させてみる
自分はTextMate使いたいので、バンドルを探してみた。
下記に紹介があった。
http://www.sidewayscoding.com/2010/08/using-textmate-for-scala-development.html
バンドルをダウンロードして取得
git clone git://github.com/mads379/scala.tmbundle.git
出来たバンドルファイルを開くと、それだけでTextMateにインストールされる。
これで、シンタックスハイライトが効く。
この状態でRunさせようとしても、下記のようなエラーが出る。(まあブログの通りなの)
SCALA_HOME in TextMate -> Preferences... -> Advanced -> Shell Variables を編集。
ッつー事なので、xsbtだと何処をさせば良いのやら。